1 using UnityEngine;
2 using
System.Collections;
3 using
UnityStandardAssets.CrossPlatformInput;
4
5 public
class PlayerShoot : MonoBehaviour {
6
7
8     RaycastHit shootHit;
9     Ray shootRay;
10     LineRenderer laserLine;
11     
int shootableMask;
12     GameObject LaserBeamOrigin;
13     GameObject LaserBeamEnd;
14     
bool isShooting = false;
15     
public Light spotLight;
16     
public int damagePoints = 10;
17
18     
public bool isEnabled = true;
19
20     
public AudioClip laser1;
21     
public AudioClip laser2;
22     
public AudioClip laser3;
23     
public AudioClip laser4;
24
25     AudioSource audio;
26
27
28     
// Use this for initialization
29     
void Start () {
30         shootableMask = LayerMask.GetMask (
"Enemies");
31         laserLine = GetComponentInChildren<LineRenderer> ();
32         LaserBeamOrigin = GameObject.FindGameObjectWithTag (
"LaserBeamOrigin");
33         LaserBeamEnd = GameObject.FindGameObjectWithTag (
"LaserBeamEnd");
34         spotLight.enabled =
false;
35         laserLine.enabled =
false;
36         audio = GetComponent<AudioSource> ();
37     
38     }
39     
40     
// Update is called once per frame
41     
void Update () {
42         laserLine.SetPosition(
0, LaserBeamOrigin.transform.position);
43
44         #
if !MOBILE_INPUT
45         
if (Input.GetButtonDown ("Fire1") && isShooting == false && isEnabled == true) {
46             Shoot ();
47             
48         }
49         #
else
50         
if(CrossPlatformInputManager.GetAxisRaw("Mouse X") != 0 || CrossPlatformInputManager.GetAxisRaw("Mouse Y") != 0){
51             Shoot();
52         }
53         #endif
54     
55     }
56
57
58     
public void Shoot(){
59         isShooting =
true;
60         spotLight.enabled =
true;
61         laserLine.enabled =
true;
62         
//laserLine.SetPosition (0, transform.position); // todo: fix this to come out off the eyes
63         laserLine.SetPosition(
0, LaserBeamOrigin.transform.position);
64
65
66         
//shootRay.origin = transform.position;
67         shootRay.origin = LaserBeamOrigin.transform.position;
68         shootRay.direction = transform.forward;
69
70         
if (Physics.Raycast (shootRay, out shootHit, 100.0f, shootableMask)) {
71             laserLine.SetPosition (
1, shootHit.point);
72             EnemyHealth enemyHealth = shootHit.collider.GetComponent<EnemyHealth> ();
73             
if (enemyHealth != null) {
74                 enemyHealth.TakeDamage (damagePoints, shootHit.point);
75             }
76         }
else {
77             laserLine.SetPosition (
1, LaserBeamEnd.transform.position);
78         }
79
80         Invoke (
"StopShooting", 0.15f);
81
82         
int randomNumber = Random.Range (1, 4);
83         
switch (randomNumber) {
84         
case 1:
85             audio.PlayOneShot (laser1);
86             
break;
87
88         
case 2:
89             audio.PlayOneShot (laser2);
90             
break;
91
92         
case 3:
93             audio.PlayOneShot (laser3);
94             
break;
95
96         
case 4:
97             audio.PlayOneShot (laser4);
98             
break;
99             
100         }
101
102     }
103
104     
void StopShooting(){
105         laserLine.enabled =
false;
106         isShooting =
false;
107         spotLight.enabled =
false;
108     }
109
110     
public void DisableShooting(){
111         isEnabled =
false;
112     }
113 }


Gõ tìm kiếm nhanh...